Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> $this->db->Query($query);, Czy tak jest poprawnie? :|
Fluke
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam, kolejny problem z którym się spotykam, tzn nie problem ale właściwy sposób.

Mam taki kod:
  1. class Controller
  2. {
  3. public function db()
  4. {
  5. try
  6. {
  7. if(!include_once('config/config.inc.php'))
  8. throw new Exception('Błąd ładowania pliku.');
  9.  
  10. switch(DATABASE)
  11. {
  12. case 'mysql' :
  13. if(!include_once('config/db.inc.php'))
  14. throw new Exception('Nie można załadować pliku konfiguracyjnego do bazy MySQL');
  15.  
  16.  
  17. return new appMySQL($mysql);
  18.  
  19. break;
  20. }
  21. } catch(Exception $e)
  22. {
  23. echo $e->getMessage();
  24. }
  25.  
  26. }
  27. }


Oraz:

  1. <?php
  2. class mojController extends Controller
  3. {
  4. function __construct()
  5. {
  6. if($this->db()->Query('SELECT * FROM users'))
  7. echo 'ok';
  8. }
  9. }
  10. ?>


Działa więc się cieszę, ale czy to jest dobry sposób? Często widzę w niektórych frameworkach czy CMS`ach że tak się stosuje, ale czy w takich przypadkach jak mój.

Pozdrawiam.
Go to the top of the page
+Quote Post
Atomic_Cookie`
post
Post #2





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 26.06.2010
Skąd: Polska

Ostrzeżenie: (0%)
-----


Za każdym zapytaniem od nową łączysz się z bazą danych, ja łączenie się z bazą danych zrobiłbym w konstruktorze.


--------------------
Have a Иice day
Go to the top of the page
+Quote Post
Fluke
post
Post #3





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Wiem, ale chciałem uniknąć zbędnego połączenia jeśli mi jest ono nie potrzebne. Chodzi mi tylko czy to jest dobre podejście, czy raczej tego unikać. Jestem początkującym, dopiero zaczynam pracę z programowaniem obiektowym, a nie chcę źle się uczyć.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cytat
a nie chcę źle się uczyć.
No to:

1. Nazwa Controller sugeruje jakiś związek z architekturą MVC. Jeśli tak jest to: kontroler nie ma nic wspólnego z bazą danych i nie powinien mieć nawet do niej dostępu.
2. Klasa Exception powinna być w PHP abstrakcyjna, bo... jej obiektami nie powinno się rzucać (powinieneś skorzystać z bardziej wyspecjalizowanego typu).
3. Wyrzucenie wyjątku tylko po to by za chwilę go złapać i kompletnie nic z nim nie zrobić, poza durnym wyświetleniem wiadomości mija się z celem - już lepiej użyć exit w takim przypadku.
4. Do obsługi bazy danych masz w miarę przyzwoite rozszerzenie PDO.
5. Korzystaj z mechanizmów automatycznego ładowania klas (ang. autoloading) bo się pochlastasz z ręcznym wczytywaniem.
6. Zdajesz sobie sprawę, że Controller:biggrin.gifb() każdorazowo tworzy nowy obiekt co jest w tym przypadku raczej niekorzystne.

EDIT: I daruj sobie póki co lekturę wzorca Singleton, bo użycie jakie sugeruje @Wicepsik jest tutaj złe pod każdym względem, a de facto nie potrzebujesz tutaj nigdzie prawdziwych cech tego wzorca.

Ten post edytował Crozin 11.01.2011, 21:30:31
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 15:12